/**
 * 
 */
package compilador.analizadorSemantico.tablaSimbolos;

import java.util.ArrayList;

/**
 * @author samsung
 *
 */
public class SimboloSemantico 
{
	//---------------------------------------------------------------------------
	//									Atributos
	//---------------------------------------------------------------------------
	
	private String nombre;
	private String ambito;
	private String tipoDato;
	ArrayList<String> parametros;
	
	//----------------------------------------------------------------------------
	//									Constructor
	//----------------------------------------------------------------------------
	
	
	
	/**
	 * @param nombre
	 * @param ambito
	 * @param tipoDato
	 */
	public SimboloSemantico(String nombre, String ambito, String tipoDato) {
		super();
		this.nombre = nombre;
		this.ambito = ambito;
		this.tipoDato = tipoDato;
	}
	
	
	/**
	 * @param nombre
	 * @param ambito
	 * @param tipoDato
	 * @param parametros
	 */
	public SimboloSemantico(String nombre, String ambito, String tipoDato,
			ArrayList<String> parametros) {
		super();
		this.nombre = nombre;
		this.ambito = ambito;
		this.tipoDato = tipoDato;
		this.parametros = parametros;
	}


	//----------------------------------------------------------------------------
	//								Getters and Setters
	//----------------------------------------------------------------------------
	
	/**
	 * Metodo que nos retorna el valor de nombre
	 * @return  nombre. Valor retornado
	 */
	public String getNombre() {
		return nombre;
	}
	/**
	 * Metodo que permite asignar el valor de nombre
	 * @param nombre. Valor a asignar nombre
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	/**
	 * Metodo que nos retorna el valor de ambito
	 * @return  ambito. Valor retornado
	 */
	public String getAmbito() {
		return ambito;
	}
	/**
	 * Metodo que permite asignar el valor de ambito
	 * @param ambito. Valor a asignar ambito
	 */
	public void setAmbito(String ambito) {
		this.ambito = ambito;
	}
	/**
	 * Metodo que nos retorna el valor de tipoDato
	 * @return  tipoDato. Valor retornado
	 */
	public String getTipoDato() {
		return tipoDato;
	}
	/**
	 * Metodo que permite asignar el valor de tipoDato
	 * @param tipoDato. Valor a asignar tipoDato
	 */
	public void setTipoDato(String tipoDato) {
		this.tipoDato = tipoDato;
	}
	/**
	 * Metodo que nos retorna el valor de parametros
	 * @return  parametros. Valor retornado
	 */
	public ArrayList<String> getParametros() {
		return parametros;
	}
	/**
	 * Metodo que permite asignar el valor de parametros
	 * @param parametros. Valor a asignar parametros
	 */
	public void setParametros(ArrayList<String> parametros) {
		this.parametros = parametros;
	}


	/**
	 * @return
	 */
	public String getParametrosString() {
		String retornable = "";
		if(parametros!= null)
			for (int i = 0; i < parametros.size(); i++) {
				if(i>0)
					retornable += ", ";
				retornable += parametros.get(i);
			}
		return retornable;
	}
	
	
}
